package com.ruoyi.system.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.system.domain.PaOrder;
import com.ruoyi.system.domain.PaUserAddrOrder;
import com.ruoyi.system.domain.PaWxUser;
import com.ruoyi.system.domain.PxBox;
import com.ruoyi.system.domain.bo.PaOrderItemBo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @ClassName SystemOrderRequestVo
 * @Description
 * @date 2024/7/25 18:44
 * @Version 1.0
 * @Auther: zhangzhenyu
 */
@ApiModel("用户订单")
@Data
public class SystemOrderReponseVo  extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 订单ID */
    @ApiModelProperty("订单ID")
    private Long orderId;

    /** 供应商id */
    @ApiModelProperty("供应商id")
    @Excel(name = "供应商id")
    private Long supplierId;

    /** 产品名称,多个产品将会以逗号隔开 */
    @Excel(name = "产品名称,多个产品将会以逗号隔开")
    @ApiModelProperty("产品名称,多个产品将会以逗号隔开")
    private String prodName;

    /** 订购用户ID */
    @ApiModelProperty("订购用户ID")
    @Excel(name = "订购用户ID")
    private String userId;

    /** 订购流水号 */
    @Excel(name = "订购流水号")
    @ApiModelProperty("订购流水号")
    private String orderNumber;

    /** 报价总值 */
    @Excel(name = "报价总值")
    @ApiModelProperty("报价总值")
    private BigDecimal total;

    /** 实际总值 */
    @Excel(name = "实际总值")
    @ApiModelProperty("实际总值")
    private BigDecimal actualTotal;

    /** 支付方式 0 手动代付 1 微信支付 2 支付宝 */
    @Excel(name = "支付方式 0 手动代付 1 微信支付 2 支付宝")
    @ApiModelProperty("支付方式 0 手动代付 1 微信支付 2 支付宝")
    private Integer payType;

    /** 订单备注 */
    @Excel(name = "订单备注")
    private String remarks;

    /** 订单状态 1:报价中  2：确认报价（采购处理）3：待签合同(采购处理)  4:生产中（供应商处理） 5:拼柜待发货 6:预计拖柜（运输中） 7:完成（采购处理） 8:失败 */
    @Excel(name = "订单状态 1:报价中  2：确认报价", readConverterExp = "采=购处理")
    @ApiModelProperty("订单状态 1:报价中  2：确认报价（采购处理）3：待签合同(采购处理)  4:生产中（供应商处理） 5:拼柜待发货 6:预计拖柜（运输中） 7:完成（采购处理） 8:失败")
    private Integer status;

    /** 订单商品总数 */
    @Excel(name = "订单商品总数")
    @ApiModelProperty("订单商品总数")
    private Integer productNums;

    /** 付款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "付款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /** 发货时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dvyTime;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date finallyTime;

    /** 取消时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "取消时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cancelTime;

    /** 是否已经支付，1：已经支付过，0：，没有支付过 */
    @Excel(name = "是否已经支付，1：已经支付过，0：，没有支付过")
    private Integer isPayed;

    /** 用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除 */
    @ApiModelProperty(name = "用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除")
    private Integer delFlag;

    /** 0:默认,1:在处理,2:处理完成 */
    @Excel(name = "0:默认,1:在处理,2:处理完成")
    @ApiModelProperty(name = "0:默认,1:在处理,2:处理完成")
    private Integer refundSts;

    /** 订单类型1:代购单 */
    @Excel(name = "订单类型1:代购单")
    @ApiModelProperty(name = "订单类型1:代购单")
    private Integer orderType;

    /** 订单关闭原因 1-未同意报价 2-退款关闭 4-买家取消 15-已通过货到付款交易 */
    @Excel(name = "订单关闭原因 1-未同意报价 2-退款关闭 4-买家取消 15-已通过货到付款交易")
    @ApiModelProperty(name = "订单关闭原因 1-未同意报价 2-退款关闭 4-买家取消 15-已通过货到付款交易")
    private Integer closeType;

    /** 是否是复购单1：不是复购2：是复购 */
    @Excel(name = "是否是复购单1：不是复购2：是复购")
    @ApiModelProperty(name = "是否是复购单1：不是复购2：是复购")
    private Integer isRepurchase;

    /** 订单商品 */
    @ApiModelProperty(value = "订单商品信息，修改商品数量以及单价放这里")
    private List<PaOrderItemBo> paOrderItemBos;

    /** 订单商品总数 */
    @ApiModelProperty(value = "供应商信息")
    private PaWxUser supplierUser;

    /** 订单商品总数 */
    @ApiModelProperty(value = "用户信息")
    private PaWxUser paWxUser;

    @ApiModelProperty(value = "拼箱信息,以及拼箱地址")
    private PxBoxVo pxBox;

    /** 订单地址 */
    @ApiModelProperty(name = "订单地址")
    private List<PaUserAddrOrder> paUserAddrs;
}
